<?php
class Wniosek_Model extends Projekt_Model {

        protected $_kryterium,$_warunki,$tytul,$opis,$uzasadnienie,$wartosc_zakupu,$propozycja,$_id_user_wniosku,$_id,
                $termin_ogloszenia,$termin_skladania_wnioskow,$wybor_oferty,$termin_podpisania_umowy,$termin_realizacji,
                $to_uwaga         ,$ts_uwaga                 ,$wo_uwaga    ,$tpu_uwaga              ,$tr_uwaga,
                $tryb,$przetarg;

        /*
         * zmienia status produktu na usuniety
         * @param $tablica_indeksow - tablica id_produktow
         */
        public function set_przetarg($zmienna)
        {
            $this->przetarg=$zmienna;
        }
        public function get_przetarg()
        {
            return $this->przetarg;
        }
        public function set_tryb($zmienna)
        {
            $this->tryb=$zmienna;
        }
        public function get_tryb()
        {
            return $this->tryb;
        }
        public function set_tr_uwaga($zmienna)
        {
            $this->tr_uwaga=$zmienna;
        }
        public function get_tr_uwaga()
        {
            return $this->tr_uwaga;
        }
        public function set_tpu_uwaga($zmienna)
        {
            $this->tpu_uwaga=$zmienna;
        }
        public function get_tpu_uwaga()
        {
            return $this->tpu_uwaga;
        }
        public function set_wo_uwaga($zmienna)
        {
            $this->wo_uwaga=$zmienna;
        }
        public function get_wo_uwaga()
        {
            return $this->wo_uwaga;
        }
        public function set_tsw_uwaga($zmienna)
        {
            $this->tsw_uwaga=$zmienna;
        }
        public function get_tsw_uwaga()
        {
            return $this->tsw_uwaga;
        }
        public function set_to_uwaga($zmienna)
        {
            $this->to_uwaga=$zmienna;
        }
        public function get_to_uwaga()
        {
            return $this->to_uwaga;
        }
        public function set_termin_realizacji($zmienna)
        {
            $this->termin_realizacji=$zmienna;
        }
        public function get_termin_realizacji()
        {
            return $this->termin_realizacji;
        }
        public function set_termin_podpisania_umowy($zmienna)
        {
            $this->termin_podpisania_umowy=$zmienna;
        }
        public function get_termin_podpisania_umowy()
        {
            return $this->termin_podpisania_umowy;
        }
        public function set_wybor_oferty($zmienna)
        {
            $this->wybor_oferty=$zmienna;
        }
        public function get_wybor_oferty()
        {
            return $this->wybor_oferty;
        }
        public function set_termin_skladania_wnioskow($zmienna)
        {
            $this->termin_skladania_wnioskow=$zmienna;
        }
        public function get_termin_skladania_wnioskow()
        {
            return $this->termin_skladania_wnioskow;
        }
        public function set_termin_ogloszenia($zmienna)
        {
            $this->termin_ogloszenia=$zmienna;
        }
        public function get_termin_ogloszenia()
        {
            return $this->termin_ogloszenia;
        }
        public function set_tytul($zmienna)
        {
            $this->tytul=$zmienna;
        }
        public function get_tytul()
        {
            return $this->tytul;
        }

        public function set_opis($zmienna)
        {
            $this->opis=$zmienna;
        }
        public function get_opis()
        {
            return $this->opis;
        }
        public function set_uzasadnienie($zmienna)
        {
            $this->uzasadnienie=$zmienna;
        }
        public function get_uzasadnienie()
        {
            return $this->uzasadnienie;
        }
        public function set_wartosc_zakupu($zmienna)
        {
            $this->wartosc_zakupu=$zmienna;
        }
        public function get_wartosc_zakupu()
        {
            return $this->wartosc_zakupu;
        }
        public function set_propozycja($zmienna)
        {
            $this->propozycja=$zmienna;
        }
        public function get_propozycja()
        {
            return $this->propozycja;
        }
        public function pobierz_wyjatki_dla_wniosku()
        {
            $sql="select propozycja from wniosek where id_wniosek=?";
            $wynik=$this->db->query($sql,$this->get_id())->result_array(false);
            return $wynik[0];
        }
        public function zapisz_reguly($opcja,$tablica_danych_formularza)
        {
            switch($opcja)
            {
                case 1:
                    $sql="update wniosek set nr_umowy_ramowej=? where id_wniosek=?";
                    return $this->db->query($sql,array($tablica_danych_formularza['pole'],$this->get_id()));
                    break;
            }
        }
        /**
         * zapisuje przyczyne odmowy danego wniosku,wczesniej wywolaj set_id_wniosku()
         */
        public function odmowa($wartosc)
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'   =>5,
                        'przyczyna'=> $wartosc
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
        }
        public function zmien_status($parametr,$przyczyna=null)
        {
            if($przyczyna)
            {
            $status = $this->db->update('wniosek',
                    array(
                        'status'   =>$parametr,
                        'przyczyna'=>$przyczyna
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
            }
            else
                $status = $this->db->update('wniosek',
                    array(
                        'status'   =>$parametr
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));

        }
        public function zmien_status_na_odrzucony($przyczyna)
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'   =>5,
                        'przyczyna'=>$przyczyna
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
        }
        public function zmien_status_na_usuniety()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'   =>10
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
        }
        public function przywroc()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'   =>8
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
        }
        /**
         * zatwierdza wniosek, ustawia status =4
         * wczesniej wywolaj set_id_wniosku()
         */
        public function zatwierdzanie()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'         => 4
                        ),
                    array('id_wniosek' => $this->get_id_user_wniosku()));
        }
        public function kontynuuj_wniosek()
        {
            $stan=$this->db->select('przyczyna')->from('wniosek')->where('id_wniosek',$this->get_id())->get()->result_array(false);
            $status = $this->db->update('wniosek',
                    array(
                        'status'         => $stan[0]['przyczyna']
                        ),
                    array('id_wniosek' => $this->get_id()));
        }
        public function wstrzymaj_wniosek()
        {
            $stan=$this->db->select('status')->from('wniosek')->where('id_wniosek',$this->get_id())->get()->result_array(false);
            $status = $this->db->update('wniosek',
                    array(
                        'status'         => 6,
                        'przyczyna'      => $stan[0]['status']
                        ),
                    array('id_wniosek' => $this->get_id()));
        }
        public function zamknij_wniosek()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'status'         => 8
                        ),
                    array('id_wniosek' => $this->_id));
        }
        
        /**
         * pobiera wnioski wraz z liczba przypisanych im komentarzom
         * @param status wniosku -wartosc liczbowa(0,1...)
         */
        public function pobierz_lista_wnioskow($status=null,$limit=null)
        {
            /*
        	$sql="
        	select distinct ff.id_wniosek,w.status,(select w.tytul from wniosek w where w.id_wniosek=ff.id_wniosek) as nazwa_wniosku,
        	(select w.opis from wniosek w where w.id_wniosek=ff.id_wniosek) as opis_wniosku,
                (select count(*) from komentarze_wniosek dd where dd.id_wniosek=ff.id_wniosek) as liczbakomentarzy,
                (select count(*) from komentarze_wniosek dd where dd.id_wniosek=ff.id_wniosek and dd.status=0) as nowekomentarze
                from komentarze_wniosek ff inner join wniosek w using(id_wniosek) group by w.status,ff.id_wniosek having ff.id_wniosek is not null";
             *
             */
                $sql="select distinct w.*,
(select count(*) from komentarze_wniosek k where k.id_wniosek=w.id_wniosek) as liczba_komentarzy,
(select count(*) from komentarze_wniosek k where k.id_wniosek=w.id_wniosek and k.status=0) as nowekomentarze
 from wniosek w ";
        	if ($status)
        	{
        		$sql.=" where w.status=? order by data_stworzenia desc nulls last";
        		$ww=$this->db->query($sql.$limit,$status)->result_array(false);
                        return $ww;
        	}
        	else 
        	    return $this->db->query($sql." where w.status not in(10) ".$limit)->result_array(false);
        }
        /**
         * 
         * pobiera wszystkie pola z tabeli wniosek, tych wnioskow, ktore maja status 0,1
         */
        public function pobierz_wnioski_w_edycji()
        {
        	$sql="select 
        	p.* 
        	from 
        	wniosek p inner join users u using(id_users) where p.status in (0,1)  and p.id_users=330";
        	return $this->db->query($sql)->result_array(false);
        }
        public function pobierz_statusy()
        {
            //$sql="select distinct p.status,count(*) from wniosek p inner join users u using(id_users) where p.id_users=330 group by p.status";
            $sql="select distinct p.status,count(*) from wniosek p inner join users u using(id_users)  group by p.status";
            return $this->db->query($sql)->result_array(false);
        }/**
         *Zwraca tablice asocjacyjną,ktora zawiera dane danego wniosku
         * przed wywolaniem wywolaj set_id()
         * @param tablica $tab ascocjacyjna zawiera nazwy kolumn do odczytania
         * @return tablica asocjacyjna tych danych
         */
        public function pobierz_wniosek($tab)
        {
            $rr=$this->db->from('wniosek')->select($tab)->where('id_wniosek',$this->_id)->get()->result_array(false);
            return $rr[0];
        }
        public function sprawdz_dane($tablica)
        {
            //$sprawdzenie=array('tytul','opis','uzasadnienie','wartosc_zakupu','propozycja','kryteria','warunki','termin_ogloszenia',
    //                 'termin_skladania_wnioskow','wybor_oferty','termin_podpisania_umowy','termin_realizacji_zamowienia');
            //ver 2
            $sprawdzenie=array('tytul','uzasadnienie','wartosc_zakupu','propozycja','kryteria','warunki','termin_ogloszenia',
                     'termin_skladania_wnioskow','wybor_oferty','termin_podpisania_umowy','termin_realizacji_zamowienia');
            foreach($sprawdzenie as $wartosc)
                if ($tablica[$wartosc]==null)
                    return 1;
        }
        /**
         * pobiera wszystkie kolumny komentarzy danego wniosku
         * @param znalezniona tablica 
         */
        public function pobierz_komentarze_wniosku($id_wniosku)
        {
        	$sql="
        	select k.*,
        	(select count(*) from zalaczniki_wniosek z where z.id_komentarz=k.id_komentarz) as liczba_komentarzy ";
        	//(select u.nazwisko from users u inner join status_komentarze s using(id_users)
        	//$sql.="where s.id_komentarz=k.id_komentarz) as uzytkownik";
        	 $sql.="from komentarze_wniosek k inner join status_komentarze s using(id_users) where k.id_wniosek=? ";
                 var_dump($sql);
        	return $this->db->query($sql,$id_wniosku)->result_array(false);
        }
       /**
       *pobiera id_wniosku o statusie 0 dla danego usera
       * zalowgowanego
       * @return <type>
       */
      public function pobierz_id_wniosku_dla_usera()
      {
          $sql="select id_wniosek from wniosek p inner join users u using(id_users) where p.status =0
              and p.id_users=?";
          $tt=$this->db->query($sql,$this->_id_user_wniosku)->result_array(false);
          return $tt;
      }
      public function pobierz_wnioski()
      {
          $tab=array('id_wniosek','tytul','opis','uzasadnienie','status');
          $rr=$this->db->from('wniosek')->select($tab)->get()->result_array(false);
            return $rr;
      }
      public function pobierz_wnioski_z_count_komentarzami()
      {
          $sql="select w.id_wniosek,w.tytul,w.opis,(select count(*) from komentarze_wniosek k where k.id_wniosek=w.id_wniosek) as liczba
from wniosek w ";
          return $this->db->query($sql)->result_array(false);
      }

        public function set_id_user_wniosku($id)
        {
            $this->_id_user_wniosku=$id;
        }
        public function get_id_user_wniosku()
        {
            return $this->_id_user_wniosku;
        }
        /**
         *tworzy nowy wniosek dla danego uzytkownika
         * @return <type>
         */
        public function pobierz_nowe_id()
        {
          //po sprawdzeniu
          //$tablica=$this->pobierz_id_wniosku_dla_usera();
          //if(empty($tablica))
          //{
            $wynik=$this->wstaw_pusty_wniosek();
            return $wynik->insert_id();
          //}
          //else
          //    return $tablica[0]['id_wniosek'];
          //po sprawdzeniu
         }
            /**
       *wstawia nowy, pusty projekt
       * @return <type>
       */
      public function wstaw_pusty_wniosek()
      {
        $sql="insert into wniosek(tytul,opis,uzasadnienie,wartosc_zakupu,propozycja,status,id_users,data_stworzenia,zamowienie)
                values(?,?,?,?,?,?,?,now(),0)";
        return $this->db->query($sql,array('','','','','',0,$this->_id_user_wniosku));
      }
      public function zmien_status_projektu($tablica_indeksow){
            $sql='in (';

            foreach($tablica_indeksow['check'] as $r=>$e)
                $sql.=$e.',';

            $sql=$this->obcinanie($sql);
            $rezultat=$this->db->query($this->polecenia_sql['update_produkt'].$sql)->result_array(true);
        }
        /**
         *zapisywanie uwag do projektu
         * @param <type> $parametry
         * @return <type>
         */
        public function zapisz_uwagi()
        {
            $sql="update projekt set uwagi=?, status=2 where id_projekt=?";
            $rezultat=$this->db->query($sql,array($this->_uwagi,$this->_id));
        }
        /**
         *dodawanie osoby do projektu
         * @param <type> $parametry-tablica ([0]-id usera,[1]-id projektu)
         * @return <type>
         */
        public function dodaj_kryterium_wnioski()
        {
            $sql="update projekt set kryteria=?,warunki=?
                where id_projekt=?";
            $rezultat=$this->db->query($sql,array($this->_kryterium,$this->_warunki,$this->_id));
            return $rezultat;
        }
        /*
         * nowy wniosek
         */
        public function nowy_wniosek($tab,$id_users){
            $sql="insert into wniosek(
                    tytul,opis,uzasadnienie,wartosc_zakupu,propozycja,id_users)
                    values
                    (?,?,?,?,?,?)";
            $rezultat=$this->db->query($sql,array('','','','','',$id_users));
            return $rezultat->insert_id();
        }
        protected function pobierz_calego_usera()
        {
            $sql="select nazwisko,imie,email,id_users as id_osoby from users where id_users=?";
            $rezultat=$this->db->query($sql,array(
                $this->_id_user_projektu))->result_array(false);
        }

        /**
         * tworzy nadrzedny projekt dla danego usera
         */
        public function update_nowy_wniosek($tab,$opcja)
        {
            $sql="update wniosek set";
            $tablica_parametrow='';
            //echo '<br>przetarg'.$tab['przetarg'];
            switch($opcja)
            {
                case 0://obsluguje poprzednia wersje aktualizowania wnioskow
                    $sql.="
                        tytul=?,
                        opis=?,
                        termin_realizacji=to_date(?,'dd-mm-yyyy'),
                        wartosc_zakupu=?,
                        waluta=?,
                        miejsce_realizacji=?,
                                status=1,
                        zamowienie=?,
                        propozycja=?,";
                    $tablica_parametrow=array(
                    $tab['tytul'],
                    $tab['opis'],
                    $tab['data_1_'],
                    $tab['szacunkowa'],
                    $tab['waluta'],
                    $tab['miejsce'],
                    //$tab['przetarg'],
                    $tab['zamowienie'],
                    $tab['propozycja'],
                    $this->_id
                    );
                    break;
                case 1://oblsuguje nowa wersje wnioskow z miescem,data oraz opcja TAK,NIE
                    $sql.="
                        miejsce_realizacji=?,
                        termin_realizacji=to_date(?,'dd-mm-yyyy'),
                        status=1,
                        id_branza=?";

                    $tablica_parametrow=array(
                        $tab['tytul'],
                        $tab['opis'],
                        $tab['uzasadnienie'],
                        $tab['szacunkowa'],
                        $tab['propozycja'],
                        $tab['przetarg'],
                        //dodatkowe elementy
                            $tab['miejsce'],
                            $tab['data_1_'],
                            $tab['przedmiot_zamowienia'],
                        //----
                        $this->_id
                    );
                    break;
            }
            $sql=substr($sql,0,strlen($sql)-1)." where id_wniosek=?";
            //var_dump($sql);
            $status=$this->db->query($sql,$tablica_parametrow);


/*
            $status = $this->db->update('wniosek',
                    array(
                        'tytul'          => $tab['tytul'],
                        'opis'           => $tab['opis'],
                        'uzasadnienie'   => $tab['uzasadnienie'],
                        'wartosc_zakupu' => $tab['szacunkowa'],
                        'status'         => 1,
                        'przetarg'       =>$tab['przetarg'],
                        'termin_realizacji'=>to_date($tab['data_1'],'dd-mm-yyyy'),
                        'propozycja'     => $tab['propozycja']
                        ),
                    array('id_wniosek' => $this->_id));
*/
            $uzyt=new Uzytkownik_Model();
            $uzyt->set_id($this->get_id_user_wniosku());
            $id_user=$uzyt->pobierz_usera(); //tu tablica ascocjacyjna danych o userze
            //jest jest juz email usera w osobach, pobranie wiersza z osob
            $uzyt->set_email($id_user['email']);
            $r=$uzyt->pobierz_id_osoby();
            //jesli nie ma osoby takiej wstaw
            if(empty($r))
                {
                $uzyt->set_nazwisko($id_user['nazwisko']);
                $uzyt->set_imie($id_user['imie']);
                //$uzyt->set_email($id_user['email']);

                $id_osoby=$uzyt->wstaw_osobe();
                $id_osoby=$id_osoby->insert_id();
                }
             else
                 $id_osoby=$r[0]['id_osoby'];
             if(!$this->sprawdz_czy_istnieje(1))
                     $this->wstaw_wniosek_dla_danego_usera($id_osoby);
        }
        public function wstaw_5_uwagi()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'uwagi'            => $this->get_uwagi()
                        ),
                    array('id_wniosek' => $this->get_id()));
        }
        public function wstaw_4_uwagi()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'termin_ogloszenia_uwagi'            => $this->get_to_uwaga(),
                        'termin_skladania_wnioskow_uwagi'    => $this->get_tsw_uwaga(),
                        'wybor_oferty_uwagi'                 => $this->get_wo_uwaga(),
                        'termin_podpisania_umowy_uwagi'      => $this->get_tpu_uwaga(),
                        'termin_realizacji_zamowienia_uwagi' => $this->get_tr_uwaga()
                        ),
                    array('id_wniosek' => $this->_id));
        }
        public function wstaw_4_harmonogram()
        {
            $sql="update wniosek
                set 
                termin_ogloszenia=to_date(?,'dd-mm-yyyy'),
                termin_skladania_wnioskow=to_date(?,'dd-mm-yyyy'),
                wybor_oferty=to_date(?,'dd-mm-yyyy'),
                termin_podpisania_umowy=to_date(?,'dd-mm-yyyy'),
                termin_realizacji_zamowienia=to_date(?,'dd-mm-yyyy')
                where id_wniosek=?";
            $rezultat=$this->db->query($sql,array(
                $this->get_termin_ogloszenia(),
                $this->get_termin_skladania_wnioskow(),
                $this->get_wybor_oferty(),
                $this->get_termin_podpisania_umowy(),
                $this->get_termin_realizacji(),
                $this->_id))->result_array(false);
        }

        public function wstaw_2_zakladka()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'kryteria'          => $this->get_kryterium(),
                        'warunki'           => $this->get_warunki()
                        ),
                    array('id_wniosek' => $this->_id));
        }
        public function wstaw_4_zakladka_uwagi()
        {
            $status = $this->db->update('wniosek',
                    array(
                        'uwagi'          => $this->get_uwagi(),
                        ),
                    array('id_wniosek' => $this->_id));
        }
        public function wstaw_4_zakladka($dane)
        {
            //var_dump($dane);
            /*
            $status = $this->db->update('wniosek',
                    array(
                        'termin_ogloszenia'          => $dane['data_1$this->get_kryterium(),
                        'warunki'           => $this->get_warunki()
                        ),
                    array('id_wniosek' => $this->_id));
             * 
             */
        }
        public function wstaw_wniosek_dla_danego_usera($id_osoby_do_wniosku)
        {
            $sql="insert into projekt_users(id_wniosek,id_osoby,id_rola) 
                values(
                (select id_wniosek from wniosek where id_wniosek=?),
                (select id_osoby from osoby where id_osoby=?),(select id_rola from rola where nazwa like 'Członek%'))";
                    $wynik=$this->db->query($sql,array($this->get_id(),
                      $id_osoby_do_wniosku));
        }
        public function zapisz_daty($tablica_dat,$opcja=null)
        {
            $sql="update projekt set
                data_rozpoczecia=to_date(?, 'dd-mm-yyyy'),
                data_wyboru_dostawcy=to_date(?, 'dd-mm-yyyy'),
                data_podpisania_umowy=to_date(?, 'dd-mm-yyyy'),
                data_realizacji=to_date(?, 'dd-mm-yyyy'),
                data_zakonczenia=to_date(?, 'dd-mm-yyyy')
                where id_projekt=?";
            /*
            if($opcja)
            $sql="update projekt set
                data_rozpoczecia=to_date(?, 'dd-mm-yyyy'),
                data_wyboru_dostawcy=to_date(?, 'dd-mm-yyyy'),
                data_podpisania_umowy=to_date(?, 'dd-mm-yyyy'),
                data_realizacji=to_date(?, 'dd-mm-yyyy'),
                data_zakonczenia=to_date(?, 'dd-mm-yyyy'),
                status=2
                where id_projekt=?";
             *
             */
            $rezultat=$this->db->query($sql,array(
                $tablica_dat['data_1'],
                $tablica_dat['data_2'],
                $tablica_dat['data_3'],
                $tablica_dat['data_4'],
                $tablica_dat['data_5'],$this->_id))->result_array(false);
        }
        public function pobierz_moje_projekty($id_user)
        {
            $sql="select p.nazwa,u.nazwisko,p.data_rozpoczecia,p.data_zakonczenia,p.status
                from projekt p inner join users u using(id_users) where u.id_users =? and p.status=2";
            $rezultat=$this->db->query($sql,$id_user)->result_array(false);
            return $rezultat;
        }
        public function pobierz_w_edycji($id_user)
        {
            $sql="select * from projekt where id_users=? and status=0";
            $rezultat=$this->db->query($sql,$this->_id)->result_array(false);
        }
        public function __construct(){
            parent::__construct();
        }
      protected function wstaw_osobe($id_usera)
      {
                    $sql="insert into osoby(nazwisko,imie,email) select nazwisko,imie,email from users
                        where id_users=?";
                    $wynik=$this->db->query($sql,$id_usera);
                    return $wynik->insert_id();
      }
      public function zamknij_edycje()
      {
          $sql="update projekt set status=2 where id_projekt=?";
          $wynik=$this->db->query($sql,array($this->_id));

      }
      public function stworz_projekt_z_wniosku($tablica_danych_wniosku,$user)
      {
          return $this->db->insert('projekt',
                  array(
                      'nazwa' => $tablica_danych_wniosku['tytul'],
                      'opis'  => $tablica_danych_wniosku['opis'],
                      'id_users' =>$user,
                      'nalezy_do' => $tablica_danych_wniosku['id_wniosek'],
                      'rozszerzony'=>$tablica_danych_wniosku['uzasadnienie']
                      )
                  );


      }
}
?>
